As electronic devices become smaller and more sophisticated, there is an increase in the demand for memory that can be read faster, stores more information in a smaller package size and uses less energy. Many of these electronic devices require the ability to store large quantities of persistent data. As one example, a solid state drive (“SSD”) is a data storage device that uses solid state memory to store large quantities of data in non-volatile memory. An SSD emulates a hard disk drive, is increasingly used to replace such hard disk drives in most applications, and are often packaged in standard disk drive form factors (1.8″, 2.5″ and 3.5″). Typically, an SSD uses non-volatile flash memory that allows the creation of more rugged and compact devices for the consumer market. The non-volatility of flash SSDs permit them to retain memory even during sudden power outages. Flash SSDs usually perform better than traditional hard drives with respect to read rates because of negligible seek time. This is because the flash SSDs have no moving parts and thus eliminate the spin up time and reduce the seek time, latency and other delays in conventional electro-mechanical disks.
One method of improving the speed performance of flash memory products is to use caching for write operations. The write time for cache memory, which is typically a volatile memory, is significantly faster than for flash memory. Thus, when a write operation occurs, the information is written into the cache memory, and then afterwards written into the flash memory at the slower transfer rate for flash write operations. The timing of the write operation from the cache to the flash memory is controlled by the write policy. In a write-through cache, a rewrite to the cache causes a synchronous write to the flash memory. Alternatively, in a write-back or a write-behind cache, writes are not immediately mirrored to the flash. Instead, the cache tracks the locations that have been written over and marks these locations as dirty. The data in these locations is written back to the non-volatile memory and then the data is removed from the cache.